ʹá
뽫ScriptļڵļƵȺ2ϷĿ¼¡ظ򸲸ǡ

˵
ע޸magic.so޸ġű±룬UEֱӸSOļֽڣֻṩ롣

P7. ޸BUG
ԭ£ʹDALL佫ʱǿʩ佫ǲܴġ
ʩŵŽʱʹLXXXõзʩ佫ʱǣ
(1) ֮ѰĿʱintvIsLeftĵзΪĿ꣬EngulfὫǱĿһֲv1棺
v233 = 0;
while ((v233 < v232)) {
	v1[v233] = GetNthSoldierInRect((intvIsLeft ^ 1), v236, v237, v241, v242, v233);
	v233++;
}
(2) ⲽɱ˴֮ǰֶLXXXʱintvIsLeft, intvAttackerMajor, intvDefenderMajorԤֱΪԷ
(3) EngulfִУɱˣÿһǱĿжǷзintvDefenderMajorȣţ
if ((GetObjectContext(v1[v233], 0) != 123) && (v1[v233] != intvDefenderMajor)) {
	asynccall KillMan(v1[v233], a0);
}
ʱԷv1intvDefenderMajorѱΪҷжϾ޷ЧִKillManµԷߡ
Ҳܼ򵥣ֻҪĿ˫ȼɡ
if ((GetObjectContext(v1[v233], 0) != 123) && (v1[v233] != intvDefenderMajor && v1[v233] != intvAttackerMajor)) {
	asynccall KillMan(v1[v233], a0);
}

ڡ2űαmagic.cppУv0.9.6ԺЧѾ޸˴BUG
ʹõmagic벻ѽṹ߼Իİ汾Ҳֱ޸Ļֶ޸ǣmagic.cppmagic.asmҲɣҵEngulfеLOC_1B4A4ͷĴƬΣ롣Ĵ벿Ѿע
ٽԴΪmagic.soɡ
LOC_1B4A4:
	PUSHARG 233
	PUSHARG 232
	CMPL
	JZ LOC_1B5A8
	PUSHARG 233
	PUSHNR 1
	PUSH 0
	SYSCALL 0x2F, (2 | (1 << 16)) ; GetCallbackContext
	PUSH 123
	CMPZ
	PUSHARG 233
	PUSHNR 1
	PUSHINV 3 ; INTV_DEFENDER_MAJOR
	CMPZ
	ORNZ
	; added code
	PUSHARG 233
	PUSHNR 1
	PUSHINV 2 ; INTV_ATTACKER_MAJOR
	CMPZ
	ORNZ
	; added code ends
	JZ LOC_1B54C
	; ...


P8. ޸ն佫޷BUG
̹ϽûоնΪʲôطɡĿǰоǰ֮͡ɵġ˵˽űĸе⡣Ҳһ
Ҫ֤佫ȴѣ͡˻նʧǾǻնԵһ֣Ǽ򵥴ֱؼһ⺯еʱɾеʧʱ佫
ֻҪڸúмһʱˣһʱǿɾʹŷҲܽʱĳȿ HalfMoonNewMotion() ó˵ǵзɹսʱ䣬GetBattleWidthInScreenX() / 36
ºֱ滻ͬɡԱαֱӱ룬Ͳʽˡ
void CheckHalfMoonNew (int moon, int spark) {
	int timer = 0;
	while(IsObjectExist(moon)) {
		Delay(1);
		timer++;
		int x = GetObjectScreenX(moon);
		if(intvIsLeft) {
			if(x > GetBattleWidthInScreenX() - 100)
				break;

		} else {
			if(x < 100)
				break;
		}
		//Prevent the magic lasting forever!
		if(timer > GetBattleWidthInScreenX() / 36 + 1)
			break;
	}
	FreeObjectByHandle(moon);
	FreeObjectByHandle(spark);
}